#define MAXSIZE 30     // MAXSIZE为最大数据元素数目
#include <stdio.h>
#include <string.h>

typedef struct
{    char name[MAXSIZE];
    int  score;
}SqList;
int compare(SqList *a,SqList *b) {
    if(a->score > b->score) {
        return 1;
    }
    if(a->score < b->score) {
        return -1;
    }
    if(a->score == b->score && strcmp(a->name,b->name)<0) {
        return 1;
    }
    if(a->score == b->score && strcmp(b->name,a->name)<0) {
        return -1;
    }
}
int main() {
    int n;
    scanf("%d",&n);
    SqList list[n];
    for(int i=0;i<n;i++) {
        scanf("%s %d",list[i].name,&list[i].score);
    }
    for(int i=0;i<n;i++) {
        for(int j=0;j<n-1-i;j++) {
            if(compare(&list[j],&list[j+1])==-1) {
                SqList temp = list[j];
                list[j] = list[j+1];
                list[j+1] = temp;
            }
        }
    }
    for(int i=0;i<n;i++) {
        printf("%s %d\n",list[i].name,list[i].score);
    }
}